package com.tan.kotlintest.proxy.myproxy;


import com.tan.kotlintest.proxy.myproxy.dynamic.ProxyCompany;
import com.tan.kotlintest.proxy.myproxy.normal.ManToolFactory;
import com.tan.kotlintest.proxy.myproxy.normal.SaleFactory;

/*
 * Copyright (C) 2018 重庆一聊高科技有限公司
 * 版权所有
 *
 * 功能描述：测试代理模式: 一般分为3部分: "购买者"   "代理中间商"   "厂商"
 * 购买者不好意思直接去厂商买, 就去代理中间商买(Mark.saleGood), 代理中间商去厂商买(ManToolFactory.saleGood)
 * 其中代理中间商还可以添加一些其他的服务
 * 注意: 应为Java中是单继承, 所以代理中不使用继承(Mark不直接继承ManToolFactory), 而使用接口: SaleFactory
 *
 * 类描述: 代理模式中的  "购买者"
 * 购买者张三通过代理商Mark 向ManToolFactory购买男士用品
 *
 * 作者：txj
 * 创建时间：2018/9/14
 *
 * 修改人：
 * 修改描述：
 * 修改日期
 */
public class BuyerClient {

    public static void main(String[] args) {
        //---------------静态代理----------------
        //张三(BuyerClient)通过代理(Mark), 向(ManToolFactory)购买一个A size的产品
        //SaleFactory manToolFactory = new ManToolFactory();
        //Mark mark = new Mark(manToolFactory);
        //mark.saleGood("A");

        //---------------动态代理----------------
        ProxyCompany company = new ProxyCompany();
        SaleFactory manToolFactory1 = new ManToolFactory();
        company.setFactory(manToolFactory1);
        //张三来了
        SaleFactory employee = (SaleFactory) company.getProxyInstance();
        employee.saleGood("EE");
    }

}
